home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 23 / CU Amiga - Super CD-ROM 23 (June 1998).iso / CreatingGames / Utilities / Misc / GMS / GMSDev / Includes / lib / dpk.s < prev   
Encoding:
Text File  |  1997-11-20  |  3.1 KB  |  148 lines

  1. ;=======T=======T========================T==========================================;
  2. ;Name:      DPKernel StartUp file.
  3. ;Author:    Paul Manias.
  4. ;Date:      October 1997.
  5. ;Copyright: DreamWorld Productions (c) 1996-1997.  All rights reserved.
  6.  
  7.     INCDIR    "INCLUDES:"
  8.     INCLUDE    "dpkernel/dpkernel.i"
  9.  
  10.     xref    _main
  11.     xref    _ProgVersion
  12.     xref    _ProgRevision
  13.     xref    _ProgAuthor
  14.     xref    _ProgCopyright
  15.     xref    _ProgDate
  16.     xref    _ProgName
  17.     xref    _ProgShort
  18.  
  19.     xdef    _BLTBase
  20.     xdef    _DPKBase
  21.     xdef    _FILBase
  22.     xdef    _GVBase
  23.     xdef    _SCRBase
  24.     xdef    _SNDBase
  25.     xdef    _BLTModule
  26.     xdef    _FILModule
  27.     xdef    _SCRModule
  28.     xdef    _SNDModule
  29.     xdef    _SysBase
  30.     xdef    _Table
  31.     xdef    __XCEXIT
  32.  
  33.     SECTION    "DPKStart",CODE
  34.  
  35. ;===================================================================================;
  36. ;                            SPECIAL STARTUP CODE
  37. ;===================================================================================;
  38.  
  39. Start:    bra.s    StartAmigaDOS
  40.  
  41. _Table:    dc.l    "PRGM"    ;ID Header.
  42.     dc.w    1    ;Version number.
  43.     dc.w    JMP_LVO    ;Type of jump table to get from DPK.
  44.     dc.l    StartDPKernel    ;Start of program.
  45. _DPKBase:
  46.     dc.l    0    ;DPKBase.
  47.     dc.l    _ProgName    ;Name of the program.
  48.     dc.l    _ProgAuthor    ;Who wrote the program.
  49.     dc.l    _ProgDate    ;Date of compilation.
  50.     dc.l    _ProgCopyright    ;Copyright details.
  51.     dc.l    _ProgShort    ;Short description of program.
  52.     dc.w    DPKVersion    ;Minimum required DPKernel version.
  53.     dc.w    DPKRevision    ;Minimum required DPKernel revision.
  54. _GVBase    dc.l    0    ;Global variable base.
  55.  
  56. StartDPKernel:
  57.     MOVEM.L    D0-D7/A0-A6,-(SP)
  58.     move.l    ($4).w,_SysBase
  59.     bra.s    Launch
  60.  
  61. StartAmigaDOS
  62.     MOVEM.L    D0-D7/A0-A6,-(SP)
  63.     move.l    ($4).w,_SysBase
  64.     move.l    _SysBase(pc),a6    ;a6 = ExecBase
  65.     lea    DPKName(pc),a1    ;a1 = Library name.
  66.     moveq    #$00,d0    ;d0 = Any version.
  67.     jsr    -552(a6)    ;>> = OpenLibrary()
  68.     move.l    d0,_GVBase    ;ma = Save global variable base.
  69.     move.l    d0,_DPKBase    ;ma = Save base.
  70.     beq.s    ErrDPK    ;>> = Error, exit.
  71.     move.w    #1,DOS
  72.  
  73.     move.l    d0,a6    ;a6 = DPKBase.
  74.     lea    Exit(pc),a0    ;a0 = Pointer to SelfDestruct() cleanup.
  75.     move.l    a7,a1    ;a1 = Stack pointer.
  76.     CALL    InitDestruct    ;>> = Initialise the call.
  77.  
  78. Launch:    move.l    _DPKBase(pc),a6
  79.     moveq    #MOD_SCREENS,d0
  80.     sub.l    a0,a0
  81.     CALL    OpenModule
  82.     move.l    d0,_SCRModule
  83.     beq.s    Exit
  84.     move.l    d0,a5
  85.     move.l    MOD_ModBase(a5),_SCRBase
  86.  
  87.     moveq    #MOD_SOUND,d0
  88.     sub.l    a0,a0
  89.     CALL    OpenModule
  90.     move.l    d0,_SNDModule
  91.     beq.s    Exit
  92.     move.l    d0,a5
  93.     move.l    MOD_ModBase(a5),_SNDBase
  94.  
  95.     moveq    #MOD_BLITTER,d0
  96.     sub.l    a0,a0
  97.     CALL    OpenModule
  98.     move.l    d0,_BLTModule
  99.     beq.s    Exit
  100.     move.l    d0,a5
  101.     move.l    MOD_ModBase(a5),_BLTBase
  102.  
  103.     moveq    #MOD_FILES,d0
  104.     sub.l    a0,a0
  105.     CALL    OpenModule
  106.     move.l    d0,_FILModule
  107.     beq.s    Exit
  108.     move.l    d0,a5
  109.     move.l    MOD_ModBase(a5),_FILBase
  110.  
  111.     move.l    _DPKBase(pc),a6
  112.     jsr    _main
  113.  
  114. __XCEXIT:
  115. Exit:    move.l    _DPKBase(pc),a6    ;a6 = DPKBase
  116.     move.l    _FILModule(pc),a0
  117.     CALL    Free
  118.     move.l    _SCRModule(pc),a0
  119.     CALL    Free
  120.     move.l    _BLTModule(pc),a0
  121.     CALL    Free
  122.     move.l    _SNDModule(pc),a0
  123.     CALL    Free
  124.  
  125.     tst.w    DOS
  126.     beq.s    ErrDPK
  127.     CALL    CloseDPK
  128. ErrDPK:    MOVEM.L    (SP)+,D0-D7/A0-A6
  129.     moveq    #$00,d0
  130.     rts
  131.  
  132. DOS:        dc.w  0
  133.  
  134. _BLTBase:    dc.l  0
  135. _FILBase:    dc.l  0
  136. _SCRBase:    dc.l  0
  137. _SNDBase:    dc.l  0
  138. _SysBase:    dc.l  0
  139.  
  140. _BLTModule:    dc.l  0
  141. _FILModule:    dc.l  0
  142. _SCRModule:    dc.l  0
  143. _SNDModule:    dc.l  0
  144.  
  145. DPKName:    dc.b  "GMS:libs/dpkernel.library",0
  146.         even
  147.  
  148.